Funktionen für Formeln / Operanden und Operatoren
Operanden - Operanden können Konstanten, Datenfelder oder Formelfelder sein.
- Numerische Konstanten - Konstanten können in dezimaler, binärer, oktaler oder hexadezimaler Schreibweise eingegeben werden.
- Bei der binären Schreibweise ist ein 'b' anzuhängen , bei der oktalen ein 'o' und bei der hexadezimalen ein 'h'.
- Bei gebrochenen Zahlen ist das in Windows eingestellte Dezimalzeichen zu verwenden.
- Ausschliesslich bei der (normalen) dezimalen Schreibweise ist auch eine Darstellung in Exponentialdarstellung möglich. Dabei ist zuerst die Mantisse anzugeben, danach ein 'E' und am Ende der Exponent zur Basis 10.
- Eine vordefinierte Konstante ist pi mit 3.14159... .
- Logische Konstanten - Logikkonstanten sind true und false;
- Zeichenkettenkonstanten / -funktionen - Zeichenkettenkonstanten sind in Anführungszeichen "
einzuschliessen. Innere Anführungszeichen sind zu doppeln.
- user (liefert das zweistellige Benutzerkürzel)
- Datumskonstanten
date (liefert das aktuelle Rechnerdatum)
now (liefert das aktuelle Rechnerdatum mit Zeitangabe) - Konstante für leere Felder - Null-Werte sollten in Formularen nicht an Formelplatzhalter zugewiesen werden. Sie können für die Auswertung von select- und dbf-Anweisungen benutzt werden. Der Vergleich mit anderen Typen liefert stets false.
- Variablen in Formeln (variable Operanden, Datenfelder) werden über Auswahlschalter eingefügt und mit geschweiften Klammern gekennzeichnet. Formelausdrücke können Zeichenketten, Zahlen, Wahrheitswerte und eingeschränkt auch null-Werte (unbestimmt vom Wert und Typ) verarbeiten und als Ergebnis liefern.
Die Verarbeitung von Datums- und Zeitwerten erfolgt
über Zahlen, wobei der ganzzahlige Anteil das Datum und der gebrochene
Anteil den Zeitanteil enthält. So kann man beispielsweise das Datum des
nächsten Tages andrucken, wenn man zur "Datumszahl" eine 1 addiert z.B.:
[V:0:DATS:::0::{System.Datum/Uhrzeit}+1]
[V:0::::0::asdatestring({System.Datum/Uhrzeit}+1;"DD.MM.YYYY")]
Die Abarbeitung erfolgt nach den üblichen Vorrangregeln (Potenzen vor Punktrechnung vor Strichrechnung). Wollen Sie eine bestimmte Abarbeitungsreihenfolge festlegen, müssen Sie runde Klammern benutzen.
Kalkulatorfunktion case
Mithilfe der Funktion case können Sie Formeln erstellen, die mehrere Vergleiche enthalten. Hierfür waren vorher komplizierte, verschachtelte „if“-Anweisungen notwendig. Soll zum Beispiel statt dem Status-Wert ein entsprechender Text ausgegeben werden, kann hierfür eine übersichtliche caseFunktion verwendet werden.
Abbildung 5.114: Beispiel
Der erste Parameter ist der Vergleichswert gefolgt von Vergleichen und dem gewünschten Ergebnis. Der letzte Parameter ist das Ergebnis, wenn keine der angegebenen Möglichkeiten übereinstimmt.
Operatoren und Funktionen - Haben Funktionen mehrere Parameter, sind diese durch Semikolon zu trennen.
für numerische Operanden
+ |
Addition (von Zahlen oder Zeichenketten) |
- |
negativer Wert oder Subtraktion |
* |
Multiplikation |
/ |
Division |
mod |
Modulo-Funktion (z.B.: 5 mod 3 ergibt 2) |
div |
ganzzahlige Division (z.B.: 4 div 3 ergibt 1) |
^ |
Potenz, nach Möglichkeit durch Multiplikationen ersetzen (z.B.: 2 ^ 4 ergibt 16) |
! |
Fakultät (z.B.: ! 5 ergibt 1*2*3*4*5=120) |
ln |
natürlicher
Logarithmus (Basis e) |
ld |
Logarithmus zur Basis 2 (z.B.: ld (2) ergibt 1) |
lg |
dekadischer Logarithmus (Basis 10) (z.B.: lg(10) ergibt 1) |
abs |
Absolutbetrag (z.B. abs(-11) ergibt 11) |
int |
ganzzahliger Anteil (z.B.: int(-1,7) ergibt -1) |
sign |
Signumfunktion (Ergebnis ist : -1 für Werte <0, 1 für Werte>0, 0 bei 0) |
frac |
gebrochener Anteil (z.B.: frac(-1,7) ergibt - 0,7) |
floor |
grösste ganze Zahl, die kleiner oder gleich dem angegebenen numerischen Ausdruck ist (z.B.: floor(1,7) ergibt 1) |
ceiling |
kleinste ganze Zahl, die grösser oder gleich dem angegebenen numerischen Ausdruck ist (z.B.: ceiling(1,7) ergibt 2) |
rdm |
Zufallszahl kleiner als der Operand erzeugen (z.B.: rdm(4) liefert 0, 1, 2 oder 3) |
rnd |
Rundung |
rn2 |
Rundung auf 2 Nachkommastellen |
sqrt |
Quadratwurzel |
sin |
Sinusfunktion |
cos |
Kosinusfunktion |
tan |
Tangensfunktion |
cot |
Kotangensfunktion |
not |
logische Negation der Binärwerte |
and |
logische Undverknüpfung der Binärwerte |
ior |
logische Oderverknüpfung der Binärwerte |
xor |
log. Exklusivoderverknüpfung der Binärwerte |
shl |
bitweises Verschieben nach links |
shr |
bitweises Verschieben nach rechts |
für Zeichenketten-Operanden
+ |
Addition (Aneinanderkettung von Zeichenketten) |
* |
wird eine Zeichenkette mit einer Zahl > 0 multipliziert erhält
man eine Zeichenkette, in der die ursprüngliche Zeichenkette
vervielfältigt wurde; |
upper |
Grossschreibung |
lower |
Kleinschreibung |
substring |
Teilzeichenkette |
replace |
ersetzt (nicht rekursiv) alle Vorkommen des zweiten
Zeichenfolgenausdrucks im ersten Zeichenfolgenausdruck durch einen
dritten Ausdruck; |
asfilename |
für Dateinamen nicht erlaubte Zeichen
der Ausgangszeichenkette werden durch ein Ersatzzeichen ersetzt; |
concat |
verbindet zwei Zeichenfolgenausdrücke durch einen Verkettungsausdruck; |
newline |
mit dieser Konstante kann ein Zeilenumbruch
innerhalb des aktuellen Platzhalters erzwungen werden |
lenth |
liefert in einem numerischen Ergebnis die Anzahl der Zeichen in der Zeichenkette |
trim |
entfernt am Anfang und Ende einer Zeichenkette alle Leer- und Steuerzeichen |
ltrim |
entfernt am Anfang einer Zeichenkette alle Leer- und Steuerzeichen |
rtrim |
entfernt am Ende einer Zeichenkette alle Leer- und Steuerzeichen |
locate |
liefert in einem numerischen
Ergebnis die erste Position der Suchzeichenkette in einer
Ausgangszeichenkette; |
lines |
liefert die Anzahl der
Zeilen eines Langtextes; |
guid36 |
liefert als Ergebnis eine Zeichenkette (36 Zeichen) ohne die führende und
schliessende Klammer |
fill |
füllt eine Zeichenkette bis zur definierten Länge auf |
split |
zerteilt eine Zeichenkette in
gleichmässige Teile |
für Logikoperanden
not |
logische Negation |
and |
logische Und-Verknüpfung |
ior |
logische Oder-Verknüpfung |
xor |
logische Exklusiv-Oder-Verknüpfung |
if |
Fallunterscheidung |
case | Die Funktion hat mindestens 4 Parameter, die Anzahl ist dabei immer geradzahlig. Der erste Parameter ist der Wert, welcher verglichen werden soll, der letzte das Ergebnis wenn keine der angegebenen Möglichkeiten übereinstimmt. Die mittleren Parameter sind paarweise ein Wert und das bei Übereinstimmung auszugebende Ergebnis. Beispiel: case({Land};"DE";"Deutschland";"AT";"Österreich";"CH";"Schweiz";"") |
Erkennung und Behandlung von Null-Werten
isnull |
1. Parameter: ein
Ausdruck von beliebigem Format(Zeichenkette, Zahl, Datum,
logisch, Null-Wert) |
Vergleichsoperatoren (die Operanden müssen vom gleichen Typ sein und liefern ein logisches Ergebnis)
= |
Gleichheit |
<> |
Ungleichheit |
< |
kleiner |
> |
grösser |
<= |
kleiner gleich |
>= |
grösser gleich |
Umwandlungsfunktionen
asfloat |
liefert
den numerischen Wert einer Zeichenkette; |
asstring |
wandelt einen numerischen Wert in
eine Zeichenkette um; |
asdatestring |
wandelt ein Datum in eine
Zeichenkette um; |
asdatetime |
wandelt ein Datum in einen
numerischen Wert (internes Datumsformat, mit dem gerechnet werden
kann) um; |
monat |
wandelt einen numerischen Wert zwischen 1 und 12 in den Monatsnamen
um, Werte > 12 bzw. < 1 geben einen Leerstring aus; |
xmltag |
wandelt eine Zeichenkette
in das Format UTF8 um und schliesst das Ergebnis in < > ein |
xmlstring |
wandelt
eine Zeichenkette in UTF8 um, nachdem zuvor <, > und & ersetzt
wurden |
htmlintext |
liefert den Textinhalt eines HTML-Quelltextes |
Hilfsfunktionen zum Schreiben von Transact-SQL-Select-Anweisungen
astsqlfloat |
1. Parameter: Zahl |
astsqlnchar |
1. Parameter: Zeichenkette |
astsqldate |
1. Parameter: Ausgangsdatum |
astsqlbit |
1. Parameter: logischer Wert |
Hinweis: Die Funktionen liefern als Ergebnis eine Zeichenkette mit einem Leerzeichen am Anfang und am Ende und können zur Unterstützung beim Schreiben von Transact-SQL-Select-Anweisungen in Formeln oder eigenen Blöcken verwendet werden.
Datumgsfunktionen
zinstage |
ermittelt die Zinstage
entsprechend der 30tägigen Zinsperiode der Bank; |
zinsmonate |
ermittelt die Zinsmonate; |
zahlungstermin |
ermittelt aus einem Datum und den Angaben der
Zahlungsbedingung einen Termin; |
kweek |
ermittelt die Kalenderwoche; als Parameter ist ein Datum als Variable
z.B. kweek({.Datum}) |
kyear |
ermittelt das Kalenderjahr zu dem die Kalenderwoche gehört; als
Parameter ist ein Datum als Variable z.B. kyear({.Datum}) |
Beispiele
- für das Datum 30.12.2021 liefert kweek eine 52, kyear die 2021 → der 30.12.2021 gehört zur 52.Kalenderwoche 2021
- für das Datum 31.12.2021 liefert kweek eine 1, kyear die 2022 → der 31.12.2021 gehört schon zur 1.Kalenderwoche 2022
Datenbankfunktionen
select |
liefert
den Wert eines Tabellenfeldes; |
Funktionen zum Lesen und Schreiben von Variablenwerten
iniput |
schreibt einen Eintrag in eine Ini-Datei oder löscht einen Eintrag;
liefert als Ergebnis einen logischen Wert, ob der Befehl erfolgreich
war: |
iniget |
liest eine Zeichenkette aus einer Ini-Datei: |
put |
speichert programmintern
einen Wert, solange das Programm läuft: |
get |
liest
programminterne Werte: |
Spezielle Funktionen
alle Programme
datenpfad |
liefert den Datenpfad mit abschliessenden Backslash |
mandantenpfad |
liefert den Mandantenpfad mit abschliessenden Backslash |
shellexecute |
zum Absetzen von Kommandos für das Betriebssystem; |
nur Auftrag
bestand |
liefert den aktuellen Bestand von Artikeln; |
bestandpm |
liefert den aktuellen Bestand von Artikeln in der Preismengeneinheit; |
gepackt |
liefert den gepackten Bestand von Artikeln; |
bestellt |
liefert die aktuell bestellte Menge von Artikeln; |
inproduktion |
liefert die Menge von Artikeln, die produziert wird;
|
reserviert |
liefert die aktuell reservierte Menge von Artikeln; |
listenpreis |
liefert
den aktuellen Listenpreis von Artikeln; |
kalkulationspreis |
liefert den aktuellen Kalkulationspreis von Artikeln; als Parameter ist die Artikelnummer als Ausdruck oder Datenbankfeld anzugeben. |
belegtyp |
liefert die Beschreibung des Belegtyps; als Parameter ist der Belegtyp anzugeben. |
belegadresskuerzel |
liefert das Adresskürzel des Belegtyps (z.B. "KU" bei Kundenbelegen); als Parameter ist der Belegtyp anzugeben. |
belegeafaktor |
liefert
die Information zur Interpretation von RNetto (z.B. bei Rechnungen
+1, bei Gutschriften -1); |
mwst |
liefert
die Steuerprozente eines Steuerschlüssels zum aktuellen Datum; |
checksumpost |
berechnet eine spezielle Prüfziffer; |
projektsumme |
liefert in Abhängigkeit vom Preistyp des Projektes die Netto- oder
Bruttoprojektsumme; |
preisgruppenbezeichnung | liefert die Bezeichnung einer Preisgruppe; als Parameter ist dabei die Nummer der Preisgruppe als Zahl oder Zeichenkette zu übergeben |
Beispiele
bestellt({Artikelnummer};"1") liefert die für den Standort "1" bestellte
Menge des vom Datenfeld "Artikelnummer" ausgegebenen Artikel
bestand("500009";"1";"500,1,1") liefert den Bestand des Artikels "500009"
auf dem Lagerplatz "500,1,1," des Flächenlagers "500" im Standort "1".
shellexecute("notepad";"c:\test.txt";3) öffnet die Datei c:\test.txt im
maximierten NotePad.
Diese speziellen Funktionen sind über Formelplatzhalter in jeder Druckvorlage anwendbar, in denen die benötigten Parameter zur Verfügung stehen.